package com.stone.demo;

// 创建一个java的package路径:
// mkdir -p com/stone/demo
// -p 可以是一个路径 (path)
// 参考: https://www.cnblogs.com/qingmingsang/articles/6409466.html

// 在jni-demo目录下执行命令:
// 1. 编译: javac8o com/stone/demo/JniDemo.java
//		字节码文件生成的位置是 com/stone/demo/
// 2. 生成头文件: javah -o JniDemo.h com.stone.demo.JniDemo
//		头文件的生成目录是当前目录 (jni-demo/)

// tips: javah命令指定的是java类的全类名, 不需要带后缀 (也不需要进入到*.class文件的所在目录下, 只需要在当前的classpath目录下即可)

// vim编辑非当前目录下的文件: vim path/to/file
// 如: vim com/stone/demo/JniDemo.java
//
public class JniDemo {
	// native库文件应该由native方法的类来加载, 而不是调用native方法的类来加载
	// 在此处加载native文件是正确的
	static {

		// native库的文件名的格式为:
		// macOS: lib库名称.jnilib 	(如, libDemo.jnilib, 库名为Demo)
		// linux: lib库名称.so  	(如, libDemo.so, 库名为Demo)
		// window: 库名称.dll  		(如, Demo.dll, 库名为Demo)


		// 此处操作系统为macOS, native库的文件名为: libJniDemo.jnilib


		// System.loadLibrary(String libname)
		// 参数libname的名称不是native库的文件名, 需要掐头去尾,
		// 即, 去掉头部的lib和尾部的.jnilib.
		System.loadLibrary("JniDemo");
	}

	public native void hello();
	public native String greeting();
}
